package com.zwq.zwqjavanotes.controller;

import com.zwq.zwqjavanotes.entity.json.Users;
import org.springframework.web.bind.annotation.*;

/**
 * @ClassName restfulController
 * @Description restful接口创建
 * @Author @gnplum O_o
 * @Date 2025/5/15 15:18
 * @Version 1.0
 */
@RestController
@RequestMapping("/api")
public class restfulController {
    // -------------------- GET 请求 --------------------
    // 1. GET 无参（查询所有用户） http://localhost:6666/api
    @GetMapping
    public String getAllUsers() {
        return "无参 GET 响应：所有用户列表,dev分支新增内容";
    }

    // 2. GET 路径参数（查询单个用户，路径参数）http://localhost:6666/api/123
    @GetMapping("/{userId}")
    public String getUserByPathParam(@PathVariable Long userId) {
        return "路径参数 GET 响应：用户 ID = " + userId;
    }

    // 3. GET 请求参数（查询用户，请求参数）http://localhost:6666/api/search?username=gnplum
    @GetMapping("/search")
    public String getUserByRequestParam(@RequestParam String username) {
        return "请求参数 GET 响应：用户名为 " + username;
    }

    // -------------------- POST 请求 --------------------
    // 1. POST 无参（示例：触发某个无参操作） http://localhost:6666/api/action
    @PostMapping("/action")
    public String postNoParam() {
        return "无参 POST 响应：触发成功";
    }

    // 2. POST 表单参数（提交表单数据）http://localhost:6666/api/form?name=gnplum&age=25 Content-Type：application/x-www-form-urlencoded  name=gnplum&age=25
    @PostMapping("/form")
    public String postFormParam(
            @RequestParam String name,// 必填参数（默认 required=true）
            @RequestParam(required = false) Integer age,  // 选填参数
            @RequestParam(defaultValue = "default") String role  // 带默认值的参数
    ) {
        return "表单参数 POST 响应：姓名=" + name + "，年龄=" + age + "，角色=" + role;
    }

    // 3. POST JSON 数据（@RequestBody 接收对象）http://localhost:6666/api/json  Content-Type: application/json    {"name": "gnplum", "age": 25}
    @PostMapping("/json")
    public String postJsonParam(@RequestBody Users user) {
        return "JSON 参数 POST 响应：用户信息=" + user.toString();
    }
}
